function MVVM (options) {
    //将选项保存到vm中
    this.$options = options
    //data保存
    let data = this._data = options.data
    //遍历data中数据进行代理
    Object.keys(data).forEach(key => {
        //这一步是关键，将数据进行代理
        this._proxy(key)
    })
    observer(data)
    this.$compile = new Compile(options.el, this)
}

MVVM.prototype = {
    _proxy: function (key) {
        Object.defineProperty(this, key, {
            configurable: false, // 不能重新定义
            enumerable: true, //可以枚举,
            get: () => {
                return this._data[key]
            },
            set: (val) => {
                this._data[key] = val
            }
        })
    }
}